import logging
import sys
import os
from pathlib import Path

def setup_logger():
    """配置全局日志设置"""
    # 创建日志格式
    log_format = '%(levelname)s:%(name)s:%(asctime)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s'
    date_format = '%Y-%m-%d %H:%M:%S'

    # 创建日志目录（如果不存在）
    log_dir = Path(__file__).parent.parent.parent / 'logs'
    try:
        log_dir.mkdir(parents=True, exist_ok=True)
        log_file = log_dir / 'app.log'
        # 确保日志文件可写
        if not log_file.exists():
            log_file.touch(mode=0o666)
    except Exception as e:
        print(f"警告：无法创建日志目录或文件: {e}")
        # 如果无法创建日志文件，只使用控制台处理器
        logging.basicConfig(
            level=logging.DEBUG,
            format=log_format,
            datefmt=date_format,
            handlers=[logging.StreamHandler(sys.stdout)]
        )
        return logging.getLogger(__name__)

    # 配置根日志记录器
    logging.basicConfig(
        level=logging.DEBUG,
        format=log_format,
        datefmt=date_format,
        handlers=[
            # 控制台处理器
            logging.StreamHandler(sys.stdout),
            # 文件处理器
            logging.FileHandler(
                str(log_file),
                encoding='utf-8',
                mode='a'
            )
        ]
    )

    # 设置第三方库的日志级别
    logging.getLogger('urllib3').setLevel(logging.WARNING)
    logging.getLogger('tencentcloud').setLevel(logging.INFO)

    return logging.getLogger(__name__)

# 创建全局日志记录器实例
logger = setup_logger()